﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

//int main() {
//	printf("hehe\n");
//	int a = 10;
//	printf("%d\n", a);
//	return 0;
//}

/*
	作用域
	局部变量：所在局部范围
	全局变量：整个工程
*/

//extern int g_vad;	//声明变量 - 变量值已在其他文件中定义
//
//int main() {
//	printf("%d", g_vad);
//	return 0;
//}

/*
	生命周期
	变量的创建与销毁的时间段
	局部变量：进入局部范围 - 出局部范围
	全局变量：程序的生命周期
*/

/*
	常量
	1.字面常量 - 3.14
	2.const修饰的常变量 - 具有常属性，仍是变量
	3.#define定义的标识符常量
	4.枚举常量 - 可以一一列举的常量 - 默认从0开始
*/

//const
//int main() {
//	const int num = 10;	//num不能被修改了
//	//num = 20;
//	printf("%d\n", num);
//	return 0;
//}

//define
//#define MAX 10000
//
//int main() {
//	int n = 0;
//	n = MAX;
//	printf("n = %d\n", n);
//	return 0;
//}

//枚举 性别
//enum Sex {
//	MALE = 3,
//	FEMALE,
//	SECRET
//};
//
//int main() {
//	enum Sex s = MALE;	//创建变量 s
//
//	printf("%d\n", MALE);
//	printf("%d\n", FEMALE);
//	printf("%d\n", SECRET);
//
//	return 0;
//}

/*
	字符串 - 一串字符 - "xxx"
*/

//int main() {
//	//字符数组 - 一组同类型元素
//	//字符串末尾隐藏了\0 - 结束标志
//	char arr[] = "Hello World";
//	char arr1[] = "abc";	//abc\0
//	char arr2[] = { 'a', 'b', 'c', '\0'};	//abc???
//
//	printf("%s\n", arr1);
//	printf("%s\n", arr2);
//
//	//求长度
//	int len = strlen("abc"); //strlen() - 求字符串长度 - 需要 #include<string.h>
//	printf("%d\n", len);	//\0不计入长度
//	printf("%d\n", strlen(arr1));
//	printf("%d\n", strlen(arr2));
//
//	return 0;
//}

/*
	转义字符 - 转变原来的含义
	\? - 书写多个问号码 - ??) -- ]
	\' - '
	\" - 字符串内部的双引号
	\\ - \
	\a - 警告字符
	\b - 退格字符
	\f - 进纸符
	\n - 换行
	\r - 回车
	\t - 水平制表符
	\v - 垂直制表符
	\ddd - ddd -- 1~3个八进制数字
	\xdd - dd -- 2个16进制数字
*/

//printf("%d", 100);
//printf("%c", 'a');
//printf("%s", "abc");

//int main() {
//	//打印目录
//	printf("c:\\test\\test.c");
//
//	//警告
//	printf("\a");
//
//	printf("\n%c\n", '\130');//X -- ASCII码为88
//	printf("%c\n", '\101');//A -- ASCII码为65
//	printf("%c\n", '\x30');
//	
//	printf("%d\n", strlen("c:\test\328\test.c"));
//
//	return 0;
//}

/*
	注释 - 解释复杂代码
	
*/

//int main() {
//	//int a = 10;//C++注释
//	/*
//		int b = 5//C的注释 - 不支持嵌套
//	*/
//	return 0;
//}

/*
	选择语句
*/

//int main() {
//	int ans = 2;
//	printf("1+1=2?(1/0)\n");
//	scanf("%d", &ans);
//
//	if (ans == 1)
//		printf("正确");
//	else if (ans == 0)
//		printf("错误");
//	else
//		printf("请不要输入其他字符");
//
//	return 0;
//}

/*
	循环语句
*/

//100日努力学习 = 好的成绩
//int main() {
//	int days = 0;
//	
//	while(days < 100) {
//		printf("已学习%d天,继续努力\n", days);
//		days++;
//	}
//
//	printf("恭喜取得好成绩！");
//	return 0;
//}

/*
	函数
*/

//int main() {
//	int num1;
//	int num2;
//	int sum;
//	scanf("%d %d", &num1, &num2);
//
//	//sum = num1 + num2;
//	//函数
//	sum = ADD(num1, num2);
//
//	printf("%d+%d=%d", num1, num2, sum);
//	return 0;
//}
//
//int ADD(int x, int y) {
//	int z = x + y;
//	return z;
//}

/*
	数组 - 一组相同类型的元素整合
	使用下标访问
*/

//int main() {
//	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//	char ch[5] = { 'a', 'b', 'c' };//不完全初始化，剩余默认为0
//	int i = 0;
//
//	while (i < 10) {
//		printf("%d ", arr[i]);
//		i++;
//	}
//
//	return 0;
//}

/*
	操作符
	算术操作符 -- + - * / %
	% -- 求余
	移位操作符 -- >> << -- 移动的是二进制位
	位操作符 -- & ^ |
	& - 按位与
	^ - 按位异或
	| - 按位或
	赋值操作符 -- = += -= *= /= &= ^= |= >>= <<= 
	单目操作符 -- 仅有一个操作数
	! - 逻辑反操作
	- -- 负值
	+ -- 正值
	& - 取地址
	sizeof - 操作数的类型长度 - 不是函数
	~ - 对其二进制按位取反
	--
	++
	* - 间接访问操作符
*/

int main() {
	int arr[10] = { 0 };
	
	printf("%d\n", sizeof(arr));
	printf("%d\n", sizeof(arr[0]));
	
	int sz = sizeof(arr) / sizeof(arr[0]);	//计算数组元素个数的大小
	printf("%d\n", sz);
	return 0;
}